package controllers;

import models.Invitation;
import models.Utilisateur;
import play.mvc.With;
import serializer.SerialiseurJsonDInvitation;
import serializer.SerialiseurJsonDUtilisateur;

@With(Securite.class)
public class Invitations extends Connecte {

	public static void envoiAUnUtilisateur(long idDestinataire) {
		Utilisateur emetteur = Connecte.utilisateur();
		Utilisateur destinataire = Utilisateur.findById(idDestinataire);
		Invitation invitation = new Invitation(emetteur, destinataire).save();
		renderJSON(invitation, new SerialiseurJsonDInvitation());
	}

	public static void annuleUneInvitationEnvoyee(long idDestinataire) {
		Utilisateur emetteur = Connecte.utilisateur();
		Utilisateur destinataire = Utilisateur.findById(idDestinataire);
		Invitation invitation = Invitation.envoyeeParEtRecuePar(emetteur, destinataire).delete();
		renderJSON(invitation, new SerialiseurJsonDInvitation());
	}

	public static void refuseUneInvitationRecue(long idEmetteur) {
		Utilisateur emetteur = Utilisateur.findById(idEmetteur);
		Utilisateur destinataire = Connecte.utilisateur();
		Invitation invitation = Invitation.envoyeeParEtRecuePar(emetteur, destinataire).delete();
		renderJSON(invitation, new SerialiseurJsonDInvitation());
	}

	public static void accepteUneInvitationRecue(long idEmetteur) {
		Utilisateur emetteur = Utilisateur.findById(idEmetteur);
		Utilisateur destinataire = Connecte.utilisateur();
		Invitation invitation = Invitation.envoyeeParEtRecuePar(emetteur, destinataire);
		invitation.accepte();
		invitation.save();
		invitation.delete();
		renderJSON(emetteur, new SerialiseurJsonDUtilisateur());
	}
}
